let READY = 'gray', STARTED = '#FF5722', FINISH = '#009688', SUM; //未开始的背景颜色 已经开始的背景颜色 已经完成的背景颜色

let thisTimer1, thisTimer2, thisTimer3, thisTimer4, thisTimer5, thisTimer6;
let setCountdown = function (y, M, d, H, m, s, htmlId, bg, Timer) {
    let endTime = new Date(y, M || 0, d || 1, H || 23, m || 59, s || 59) //结束日期
        , serverTime = new Date(); //假设为当前服务器时间，这里采用的是本地时间，实际使用一般是取服务端的
    clearTimeout(Timer);
    layui.util.countdown(endTime, serverTime, function (date, serverTime, timer) {
        let str = date[0] + '天' + date[1] + '时' + date[2] + '分' + date[3] + '秒';
        $(htmlId).html(str).css('color', bg);
        Timer = timer;
    });
};

$(function () {
    layui.layer.load(0, {shade: [0.5, '#fff']});
    getStuSum();
    getStageTime();
    layui.layer.closeAll('loading');
});

function getStageTime() {
    let url = "/queryAllStageTime";
    let param = {};
    $.get(url, param, function (data) {
        setStuState(data);
    }, 'json');
}

/*后台查询各阶段的时间 设置时间树和背景颜色*/
function setStuState(data) {
    if (data.data !== null || data.data !== '') {
        for (let i = 0; i < data.data.length; i++) {
            if (data.data[i].stage === 1 || data.data[i].stage === '1') {
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                //设置时间
                $("#assignmentTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //任务书阶段
                $("#assignment").css('background-color', bg); //任务书阶段
                $("#assignmentTime").css('color', bg);
                $("#time1").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //任务书阶段
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret1", bg, thisTimer1);
            } else if (data.data[i].stage === 2 || data.data[i].stage === '2') {
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                //设置时间
                $("#reportTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //开题报告阶段
                $("#report").css('background-color', bg); //开题报告阶段
                $("#reportTime").css('color', bg);
                $("#time2").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //开题报告阶段
                //数字倒计时
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret2", bg, thisTimer2);
            } else if (data.data[i].stage === 3 || data.data[i].stage === '3') {
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                //设置时间
                $("#mediumTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //中期检查阶段
                $("#medium").css('background-color', bg); //中期检查阶段
                $("#mediumTime").css('color', bg);
                $("#time3").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //中期检查阶段
                //数字倒计时
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret3", bg, thisTimer3);
            } else if (data.data[i].stage === 4 || data.data[i].stage === '4') {
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                //设置时间
                $("#firstDraftTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //论文初稿阶段
                $("#firstDraft").css('background-color', bg); //论文初稿阶段
                $("#firstDraftTime").css('color', bg);
                $("#time4").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //论文初稿阶段
                //数字倒计时
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret4", bg, thisTimer4);
            } else if (data.data[i].stage === 5 || data.data[i].stage === '5') {
                //设置时间
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                $("#finalizeTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //论文定稿阶段
                $("#finalize").css('background-color', bg); //论文定稿阶段
                $("#finalizeTime").css('color', bg);
                $("#time5").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //论文定稿阶段
                //数字倒计时
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret5", bg, thisTimer5);
            } else if (data.data[i].stage === 6 || data.data[i].stage === '6') {
                let bg = checkTime(data.data[i].startTime, data.data[i].endTime);
                //设置时间 背景颜色 和字体颜色
                $("#finalVersionTree").html(data.data[i].startTime + " 开始<br> " + data.data[i].endTime + " 结束").css('color', bg); //论文终稿阶段
                $("#finalVersion").css('background-color', bg); //论文终稿阶段
                $("#finalVersionTime").css('color', bg);
                $("#time6").html(data.data[i].startTime + " 到 " + data.data[i].endTime).css('color', bg); //论文终稿阶段
                //数字倒计时
                let endTimeArray = data.data[i].endTime.split('-');
                setCountdown(parseInt(endTimeArray[0]), parseInt(endTimeArray[1]) - 1, parseInt(endTimeArray[2]), 23, 59, 59, "#time-ret6", bg, thisTimer6);
            }
        }
    }
}


/**
 * 判断当前时间是否在两个时间范围内 1001前 1002中  1003后面
 * @param startTIme 开始时间
 * @param endTime 结束时间
 */
function checkTime(startTIme, endTime) {
    startTIme = startTIme.replace(/-/g, '/');
    endTime = endTime.replace(/-/g, '/');
    let newStart = new Date(startTIme).getTime();  //开始时间的时间戳
    let newEnd = new Date(endTime).getTime(); //结束时间的时间戳
    let now = new Date().getTime(); //当前时间戳
    if (now < newStart) {
        return READY;
    } else if (now > newEnd) {
        return FINISH;
    } else {
        return STARTED;
    }
}


/*查询总人数*/
function getStuSum() {
    let url = "/getChooseSum";
    let param = {userName: USERNAME}
    $.get(url, param, function (data) {
        let sum = data.split("@");
        SUM = parseInt(sum[0]);
        let finishStu = parseInt(sum[1]);
        let unFinishStu = SUM - finishStu; //未完成
        $("#finishStu").html(finishStu); //未完成选题的学生
        $("#unFinishStu").html(unFinishStu); //已完成选题的学生
        $("#stuSum").html(SUM); //学生的总数
        getStateSum(); //获取不同阶段的人数信息
    });
}

//获取不同阶段阶段的人数
function getStateSum() {
    let url = "/getSum";
    let param = {userName: USERNAME, type: 1}
    $.get(url, param, function (data) {
        getFinishSum(data)
    });

}


//获取不同阶段阶段的人数
function getFinishSum(stateSum) {
    let url = "/getSum";
    let param = {userName: USERNAME, type: 2}
    $.get(url, param, function (data) {
        setStateSum(stateSum, data)
    });
}

//设置不同阶段阶段的人数
function setStateSum(stateSum, finishSum) {
    let stateSumArray = stateSum.split("@");
    let finishSumArray = finishSum.split("@");

    //各阶段的人数
    let sum1 = parseInt(stateSumArray[0]), sum2 = parseInt(stateSumArray[1]), sum3 = parseInt(stateSumArray[2]),
        sum4 = parseInt(stateSumArray[3]), sum5 = parseInt(stateSumArray[4]), sum6 = parseInt(stateSumArray[5]);

    //各个阶段的已经完成的人数
    let finish1 = parseInt(finishSumArray[0]), finish2 = parseInt(finishSumArray[1]),
        finish3 = parseInt(finishSumArray[2]), finish4 = parseInt(finishSumArray[3]),
        finish5 = parseInt(finishSumArray[4]), finish6 = parseInt(finishSumArray[5]);

    //任务书
    $("#assignmentNotStart").html(SUM - sum1); //已开始的学生
    $("#assignmentStart").html(sum1 - finish1); //已开始的学生
    $("#assignmentFinish").html(finish1); //已完成
    $("#assignmentRate").html((100 * finish1 / SUM).toFixed(2)); //完成率保留两位小数

    //开题报告
    $("#reportNotStart").html(SUM - sum2); //未开始的学生
    $("#reportStart").html(sum2 - finish2); //已开始的学生
    $("#reportFinish").html(finish2); //已完成
    $("#reportRate").html((100 * finish2 / SUM).toFixed(2)); //完成率保留两位小数

    //中期检查
    $("#mediumNotStart").html(SUM - sum3); //未开始的学生
    $("#mediumStart").html(sum3 - finish3); //已开始的学生
    $("#mediumFinish").html(finish3); //已完成
    $("#mediumRate").html((100 * finish3 / SUM).toFixed(2)); //完成率保留两位小数

    //初稿
    $("#firstDraftNotStart").html(SUM - sum4); //未开始的学生
    $("#firstDraftStart").html(sum4 - finish4); //已开始的学生
    $("#firstDraftFinish").html(finish4); //已完成
    $("#firstDraftRate").html((100 * finish4 / SUM).toFixed(2)); //完成率保留两位小数

    //定稿
    $("#finalizeNotStart").html(SUM - sum5); //未开始的学生
    $("#finalizeStart").html(sum5 - finish5); //已开始的学生
    $("#finalizeFinish").html(finish5); //已完成
    $("#finalizeRate").html((100 * finish5 / SUM).toFixed(2)); //完成率保留两位小数

    //终稿
    $("#finalVersionNotStart").html(SUM - sum6); //未开始的学生
    $("#finalVersionStart").html(sum6 - finish6); //已开始的学生
    $("#finalVersionFinish").html(finish6); //已完成
    $("#finalVersionRate").html((100 * finish6 / SUM).toFixed(2)); //完成率保留两位小数

}







































































































